Skip to content

Conversation

@waleedlatif1
Copy link
Collaborator

@waleedlatif1 waleedlatif1 commented Jan 29, 2026

waleedlatif1 and others added 16 commits January 28, 2026 10:38
…Ds (#3044)

* improvement(cmdk): refactor search modal to use cmdk + fix icon SVG IDs

* chore: remove unrelated workflow.tsx changes

* chore: remove comments

* chore: add devtools middleware to search modal store

* fix: allow search data re-initialization when permissions change

* fix: include keywords in search filter + show service name in tool operations

* fix: correct filterBlocks type signature

* fix: move generic to function parameter position

* fix(mcp): correct event handler type for onInput

* perf: always render command palette for instant opening

* fix: clear search input when modal reopens
…atibility (#3046)

* fix(helm): move rotationPolicy under privateKey for cert-manager compatibility

* docs(helm): add reclaimPolicy Retain guidance for production database storage

* fix(helm): prevent empty branding ConfigMap creation
* Fix

* Cleanup

* order of ops for validations

* only reachable subflow nodes should hit validation

---------

Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
* fix(workflow): update container dimensions on keyboard movement

* fix(workflow): avoid duplicate container updates during drag

Add !change.dragging check to only handle keyboard movements in
onNodesChange, since mouse drags are already handled by onNodeDrag.

* fix(workflow): persist keyboard movements to backend

Keyboard arrow key movements now call collaborativeBatchUpdatePositions
to sync position changes to the backend for persistence and real-time
collaboration.

* improvement(cmdk): refactor search modal to use cmdk + fix icon SVG IDs (#3044)

* improvement(cmdk): refactor search modal to use cmdk + fix icon SVG IDs

* chore: remove unrelated workflow.tsx changes

* chore: remove comments

* chore: add devtools middleware to search modal store

* fix: allow search data re-initialization when permissions change

* fix: include keywords in search filter + show service name in tool operations

* fix: correct filterBlocks type signature

* fix: move generic to function parameter position

* fix(mcp): correct event handler type for onInput

* perf: always render command palette for instant opening

* fix: clear search input when modal reopens

* fix(helm): move rotationPolicy under privateKey for cert-manager compatibility (#3046)

* fix(helm): move rotationPolicy under privateKey for cert-manager compatibility

* docs(helm): add reclaimPolicy Retain guidance for production database storage

* fix(helm): prevent empty branding ConfigMap creation

* fix(workflow): avoid duplicate position updates on drag end

Check isInDragOperation before persisting in onNodesChange to prevent
duplicate calls. Drag-end events have dragStartPosition still set,
while keyboard movements don't, allowing proper distinction.
…lue uniqueness (#3050)

* improvement(search-modal): add quick navigation items and fix cmdk value uniqueness

* rerank
* Run from block

* Fixes

* Fix

* Fix

* Minor improvements

* Fix

* Fix trace spans

* Fix loop l ogs

* Change ordering

* Run u ntil block

* Lint

* Clean up

* Fix

* Allow run from block for triggers

* Consolidation

* Fix lint

* Fix

* Fix mock payload

* Fix

* Fix trigger clear snapshot

* Fix loops and parallels

* Fix

* Cleanup

* Fix test

* Fix bugs

* Catch error

* Fix

* Fix

* I think it works??

* Fix

* Fix

* Add tests

* Fix lint

---------

Co-authored-by: Vikhyath Mondreti <vikhyath@simstudio.ai>
* feat(description): added version description for deployments table

* feat(description): refactor to tanstack query and remove useEffect

* add wand to generate diff

* ack comments

* removed redundant logic, kept single source of truth for diff

* updated docs

* use consolidated sse parsing util, add loops & parallels check

* DRY
* feat(code): collapsed JSON in terminal

* improvement(code): addressed comments

* feat(terminal): added structured output; improvement(preview): note block

* feat(terminal): log view

* improvement(terminal): ui/ux

* improvement(terminal): default sizing and collapsed width

* fix: code colors, terminal large output handling

* fix(terminal): structured search

* improvement: preivew accuracy, invite-modal admin, logs live
… logs (#3054)

* fix(child-workflow): must bypass hiddenFromDisplay config

* fix passing of spans to be in block log

* keep fallback for backwards compat

* fix error message formatting

* clean up
* fix: terminal spacing, subflow disabled in preview

* addressed comments
…un from block icon to match run workflow button (#3056)

* fix(icons): update strokeWidth of action bar items to match, update run from block icon to match run workflow button

* update docs
* fix(snapshot): consolidate to use hasWorkflowChanges check

* Remove debug logs

* fix normalization logic

* fix serializer for canonical modes
* feat(timeout): add timeout subblock to the api block

* fix(timeout): honor timeout config for internal routes and fix type coercion

- Add AbortController support for internal routes (/api/*) to honor timeout
- Fix type coercion: convert string timeout from short-input to number
- Handle NaN gracefully by falling back to undefined (default timeout)

Fixes #2786
Fixes #2242

* fix: remove redundant clearTimeout in catch block

* fix: validate timeout is positive number

Negative timeout values would cause immediate request abort since
JavaScript treats negative setTimeout delays as 0.

* update docs image, update search modal performance

* removed unused keywords type

* ack comments

* cleanup

* fix: add default timeout for internal routes and validate finite timeout

- Internal routes now use same 5-minute default as external routes
- Added Number.isFinite() check to reject Infinity values

* fix: enforce max timeout and improve error message consistency

- Clamp timeout to max 600000ms (10 minutes) as documented
- External routes now report timeout value in error message

* remove unused code
@vercel
Copy link

vercel bot commented Jan 29, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

1 Skipped Deployment
Project Deployment Review Updated (UTC)
docs Skipped Skipped Jan 29, 2026 5:54am

Request Review

…h enhanced API coverage (#3060)

* feat(youtube): add captions, trending, and video categories tools with enhanced API coverage

* fix(youtube): remove captions tool (requires OAuth), fix tinybird defaults, encode pageToken
@waleedlatif1
Copy link
Collaborator Author

@greptile

@waleedlatif1
Copy link
Collaborator Author

@cursor review

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

✅ Bugbot reviewed your changes and found no new issues!

Comment @cursor review or bugbot run to trigger another review on this PR

@greptile-apps
Copy link
Contributor

greptile-apps bot commented Jan 29, 2026

Greptile Overview

Greptile Summary

This release consolidates multiple improvements across workflow execution, UI/UX, infrastructure, and API integrations:

Major Features:

  • Run from/until block: New execution mode allowing workflows to start from any block using cached upstream state, with comprehensive validation and dirty set computation
  • Structured output terminal: Virtualized JSON viewer with search, navigation, and collapsible nodes for handling large outputs efficiently
  • Search modal overhaul: Migrated to cmdk library with quick navigation items and improved filtering logic
  • YouTube API expansion: Added trending videos and video categories tools with regional filtering support

Bug Fixes:

  • Fixed empty collection handling in forEach loops - now properly sets empty output and emits completion events
  • Fixed child workflow trace spans to read from both log.childTraceSpans and log.output.childTraceSpans locations
  • Fixed Helm cert-manager compatibility by moving rotationPolicy under privateKey spec
  • Fixed timezone-dependent test assertions by switching to UTC methods
  • Fixed workflow snapshot comparison to use hasWorkflowChanges check consistently

Improvements:

  • Added API block timeout configuration (default 5min, max 10min)
  • Enhanced trigger input sanitization with scheduleInfo system subblock
  • Terminal component restructured with extracted subcomponents for maintainability
  • Added deployment version descriptions with database migration
  • Improved workflow diff logic with better normalization

The changes follow established patterns and maintain consistency with the codebase architecture.

Confidence Score: 4.5/5

  • Safe to merge with minor testing recommended for run-from-block feature
  • High confidence due to well-structured changes with comprehensive tests, clear bug fixes, and adherence to existing patterns. Slight reduction for the new run-from-block feature which is complex and would benefit from thorough integration testing.
  • No files require special attention - all changes are well-implemented

Important Files Changed

Filename Overview
helm/sim/templates/certificate-postgresql.yaml moved rotationPolicy under privateKey for cert-manager API compliance
apps/sim/app/api/workflows/[id]/execute-from-block/route.ts added new API route for run-from-block feature with proper validation and SSE streaming
apps/sim/executor/utils/run-from-block.ts implemented core logic for run-from-block validation and execution set computation
apps/sim/executor/orchestrators/loop.ts fixed empty collection handling - now sets empty output and emits events correctly
apps/sim/lib/logs/execution/trace-spans/trace-spans.ts fixed child workflow trace span handling - reads from both log.childTraceSpans and log.output.childTraceSpans
apps/sim/app/workspace/[workspaceId]/w/components/sidebar/components/search-modal/search-modal.tsx refactored search modal to use cmdk library for improved UX and performance
apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/terminal/terminal.tsx restructured terminal with extracted components for better maintainability
apps/sim/app/workspace/[workspaceId]/w/[workflowId]/components/terminal/components/output-panel/components/structured-output.tsx added virtualized structured output viewer for large JSON with search and navigation

Sequence Diagram

sequenceDiagram
    participant Client
    participant API as execute-from-block API
    participant Core as executeWorkflowCore
    participant Validator as run-from-block validator
    participant DAG as DAG Builder
    participant Executor as Workflow Executor
    participant LoopOrch as Loop Orchestrator
    participant Logger as Trace Spans

    Client->>API: POST /workflows/{id}/execute-from-block
    Note over Client,API: startBlockId + sourceSnapshot
    API->>API: Validate request schema
    API->>Validator: validateRunFromBlock(blockId, dag, executedBlocks)
    Validator->>Validator: Check block exists
    Validator->>Validator: Check not in loop/parallel
    Validator->>Validator: Check upstream executed
    Validator-->>API: Validation result
    
    alt Validation passes
        API->>Core: executeWorkflowCore(snapshot, runFromBlock)
        Core->>Validator: computeExecutionSets(dag, startBlockId)
        Validator->>Validator: Build dirtySet (downstream)
        Validator->>Validator: Build upstreamSet (ancestors)
        Validator->>Validator: Build reachableUpstreamSet
        Validator-->>Core: ExecutionSets
        
        Core->>Executor: Execute with dirty set
        Executor->>Executor: Skip clean blocks
        Executor->>Executor: Re-execute dirty blocks
        
        alt Block is forEach with empty collection
            Executor->>LoopOrch: shouldExecuteFirstIteration()
            LoopOrch->>LoopOrch: Check items.length === 0
            LoopOrch->>LoopOrch: setBlockOutput(loopId, {results: []})
            LoopOrch-->>Executor: Skip iteration body
        end
        
        Executor->>Logger: Build trace spans
        Logger->>Logger: Read childTraceSpans from log
        Logger->>Logger: Flatten workflow children
        Logger->>Logger: Filter hidden keys
        Logger-->>Executor: Clean trace spans
        
        Executor-->>API: Execution result
        API->>Client: SSE stream with events
    else Validation fails
        API->>Client: 400 error with details
    end
Loading

Copy link
Contributor

@greptile-apps greptile-apps bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

8 files reviewed, no comments

Edit Code Review Agent Settings | Greptile

… workflow snapshot (#3062)

* feat(preview): add workflow context badge for nested navigation

Adds a badge next to the Back button when viewing nested workflows
to help users identify which workflow they are currently viewing.
This is especially helpful when navigating deeply into nested
workflow blocks.

Changes:
- Added workflowName field to WorkflowStackEntry interface
- Capture workflow name from metadata when drilling down
- Display workflow name badge next to Back button

Co-authored-by: emir <emir@simstudio.ai>

* added workflow name and desc to metadata for workflow preview

* added copy and search icon in code in preview editor

---------

Co-authored-by: Cursor Agent <cursoragent@cursor.com>
Co-authored-by: waleed <walif6@gmail.com>
* feat(child-workflows): nested execution snapshots

* cleanup typing

* address bugbot comments and fix tests

* do not cascade delete logs/snapshots

* fix few more inconsitencies

* fix external logs route

* add fallback color
@waleedlatif1 waleedlatif1 merged commit c6bf5cd into main Jan 29, 2026
26 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants